package librairies.liste.interfaces;

/**
 * definition d'une liste E
 * 
 * @author mlozach
 * @param <F> type de l'objet dans la liste.
 */
public interface IListeE<F extends Comparable<F>> extends IListe<F> 
{
	/**
	 * permet d'inverser la liste.
	 */
	void reverse();
	
	/**
	 * permet de transformer la liste en tableau.
	 * @return le tableau.
	 */
	Object[] toArray();
	
	/**
	 * permet de recuperer un iterateur pointer sur la liste.
	 * @return l'iterateur.
	 */
	IIterateur<F> iterator();
	
	/**
	 * permet de trouver la plus grande valeur.
	 * @return la plus grande valeur.
	 * @throws java.util.NoSuchElementException
	 */
	F max() throws java.util.NoSuchElementException;
	
	/**
	 * permet de trouver la plus petite valeur.
	 * @return la plus petite valeur.
	 * @throws java.util.NoSuchElementException
	 */
	F min() throws java.util.NoSuchElementException;
	
	/**
	 * permet de recuperer une sous liste
	 * @param borneMin le debut de la sous liste
	 * @param borneMax la fin de la sous liste
	 * @return la sous liste
	 */
	IListeE<F> subSet(F borneMin, F borneMax);
	
	/**
	 * permet de ranger la liste
	 */
	void sort();
}